package servlets;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import domein.Bestelling;
import domein.Bestellingen;
import domein.BrandstofBestelling;
import domein.OnderdeelGebruikt;
import domein.ProductBestelling;
import domein.Voorraad;

@WebServlet(name="LeveringBevestigenServlet", urlPatterns="/medewerker/LeveringBevestigen.do")
public class LeveringBevestigenServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * Default constructor.
	 */
	public LeveringBevestigenServlet() {
		super(); 
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		boolean gevonden = false;
		RequestDispatcher rd = null;
		String bestelnummer = "";
		if (request.getParameter("invoer") != null && !request.getParameter("invoer").isEmpty())
		{
			bestelnummer = request.getParameter("invoer");
		}
		else if(request.getParameter("bestelnummer") != null){
			bestelnummer = request.getParameter("bestelnummer");
		}
		if (bestelnummer.isEmpty())
		{
			rd = request.getRequestDispatcher("/medewerker/levering-bevestigen.jsp");
			request.setAttribute("error", "Geen levering gevonden");
		}
		else{
		for(Bestelling b : Bestellingen.getBestellingen()){
			if(b.getBestelNummer().equals(bestelnummer)){
				if (b instanceof BrandstofBestelling){
					if(((BrandstofBestelling) b).getBrandstof().equals("diesel")){
						Voorraad.addDiesel(((BrandstofBestelling) b).getAantal());
					}
					else if(((BrandstofBestelling) b).getBrandstof().equals("benzine")){
						Voorraad.addBenzine(((BrandstofBestelling) b).getAantal());
					}
					else if(((BrandstofBestelling) b).getBrandstof().equals("gas")){
						Voorraad.addGas(((BrandstofBestelling) b).getAantal());
					}
				}
				if (b instanceof ProductBestelling){
					for (OnderdeelGebruikt p : ((ProductBestelling) b).getOnderdelen()){
						Voorraad.getOnderdeel(p.getOmschrijving()).addVoorraad(p.getaantalOnd());
					}
				}
				gevonden = true;
			}
		}
		}
		if(gevonden){
			Bestellingen.verwijderBestelling(bestelnummer);
			request.setAttribute("error", "Levering verwerkt");
			rd = request.getRequestDispatcher("/medewerker/levering-bevestigen.jsp");
		}
		else{
			rd = request.getRequestDispatcher("/medewerker/levering-bevestigen.jsp");
			request.setAttribute("error", "Geen levering gevonden");
		}
		rd.forward(request, response);
	}
}